<template>
  <div class="article-page">
    <div @click="$router.push('/detail/' + item.id)"  v-for="item in list" :key="item.id" class="article-item">
      <div class="head">
        <img :src="item.creatorAvatar" alt="" />
        <div class="con">
          <p class="title">{{ item.stem }}</p>
          <p class="other">{{ item.creatorName }} | {{ item.createdAt }}</p>
        </div>
      </div>
      <div class="body">
        {{ item.content }}
      </div>
      <div class="foot">点赞 {{ item.likeCount }} | 浏览 {{ item.views }}</div>
    </div>
  </div>
</template>

<script>
// 渲染列表总结:
// 1. 安装 axios  yarn add axios
// 2. 在 Article.vue 中导入 axios
// 3. 在 created 中发请求
// 4. 将结果存储在 data 中
// 5. 使用 v-for 循环渲染

// 路由跳转传参总结
// 1. 在div 身上绑定点击事件,使用 $router.push进行跳转
// 2. 在路由中配置路径参数 /detail/:id
// 3.传入参数
// 4. 在目标组件(ArticleDetail)中使用 $router
import axios from 'axios'
export default {
  name: 'ArticlePage',
  data() {
    return {
        list:[]
    };
  },
  // 页面加载 一共会执行四个钩子函数: befroeCreate creaated beforeMount mounted
  // 为什么在created 中发请求,而不是其他钩子呢?
  // beforeCreate: 此时 data 还没初始化,如果发送请求的参数有些定义在 data 中,就无法访问了
  // 发送请求有个基本原则,在条件允许的情况下,越早越早
  async created(){
  //在此处发送请求
   const res = await axios.get('https://mock.boxuegu.com/mock/3083/articles')
    this.list = res.data.result.rows
  },
  destroyed(){
    console.log('Article destroyed');
  },
  activated(){
    console.log('Article 显示了');
  },
  deactivated(){
    console.log('Article 隐藏了');
  }
};
</script>
<style lang="less" scoped>
.article-page {
  background: #f5f5f5;
}
.article-item {
  margin-bottom: 10px;
  background: #fff;
  padding: 10px 15px;
  .head {
    display: flex;
    img {
      width: 40px;
      height: 40px;
      border-radius: 50%;
      overflow: hidden;
    }
    .con {
      flex: 1;
      overflow: hidden;
      padding-left: 15px;
      p {
        margin: 0;
        line-height: 1.5;
        &.title {
          text-overflow: ellipsis;
          overflow: hidden;
          width: 100%;
          white-space: nowrap;
        }
        &.other {
          font-size: 10px;
          color: #999;
        }
      }
    }
  }
  .body {
    font-size: 14px;
    color: #666;
    line-height: 1.6;
    margin-top: 10px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .foot {
    font-size: 12px;
    color: #999;
    margin-top: 10px;
  }
}
</style>